﻿// ===============================================================================
//  Copyright © ymind.net. All rights reserved .
//  官方网站：http://ymind.net/
//  版权所有：彦铭工作室 老陈出品
// ===============================================================================

using System;
using System.Runtime.InteropServices;

namespace Lcsoft.TemplateEngine.XHtmlParser
{
	/// <summary>
	/// 表示 <see cref="XHtmlDocument"/> 对象的一个文本节点。
	/// </summary>
	[ComVisible(true)]
	[Serializable]
	public class XHtmlText : XHtmlNode
	{
		/// <summary>
		/// 初始化 <see cref="XHtmlText"/> 类的新实例。
		/// </summary>
		/// <param name="text"><see cref="XHtmlText"/> 的文本。</param>
		/// <param name="line"><see cref="XHtmlText"/> 所在的行数。</param>
		/// <param name="column"><see cref="XHtmlText"/> 所在的列数。</param>
		public XHtmlText(string text, int line, int column) : base(line, column)
		{
			if (text == null) throw new ArgumentNullException("text");

			this.Text = text;
		}

		/// <summary>
		/// 获取或设置 <see cref="XHtmlText"/> 的文本。
		/// </summary>
		public string Text { get; set; }

		/// <summary>
		/// 返回包含 <see cref="XHtmlText"/> 内容的 .html 格式的字符串。
		/// </summary>
		/// <returns>返回 <see cref="System.String"/>。</returns>
		public override string ToHtml() { return this.Text; }

		/// <summary>
		/// 返回包含 <see cref="XHtmlText"/> 内容的 .aspx 格式的字符串。
		/// </summary>
		/// <returns>返回 <see cref="System.String"/>。</returns>
		public override string ToAspx()
		{
			//if (String.IsNullOrEmpty(this.Text.Trim()))
			//{
			//    bool fp = this.Previous != null && this.Previous.IsTemplateTag;
			//    bool fn = this.Next != null && this.Next.IsTemplateTag;

			//    if (fp && fn) return String.Empty;

			//    if (this.Parent != null)
			//    {
			//        TemplateTag element = this.Parent as TemplateTag;

			//        if (element == null) return this.Text;
			//        if (element is ImportantTag || element is SwitchTag || element is ImportantTag || element is ThrowTag
			//            || element is IfTag || element is ElseIfTag || element is ElseTag || element is VarTag) return String.Empty;

			//        if (element.Nodes.Count == 0) return this.Text;
			//        if (element.Nodes.First() == this) return this.Text.Insert(0, Environment.NewLine);
			//        if (element.Nodes.Last() == this) return String.Empty;
			//    }

			//    if (fp && this.Previous is TemplateTag || fn && this.Next is TemplateTagBase) return String.Empty;
			//    if (fp || fn) return this.Text.Insert(0, Environment.NewLine);
			//}

			return this.Text;
		}

		/// <summary>
		/// 返回表示 <see cref="XHtmlText"/> 的字符串。
		/// </summary>
		/// <returns>返回 <see cref="System.String"/>。</returns>
		public override string ToString() { return this.Text; }
	}
}
